package ace.module.product.api.model.dto;

import io.swagger.v3.oas.annotations.media.Schema;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import jakarta.validation.constraints.*;
import jakarta.annotation.Nullable;
import java.io.Serializable;

/**
* 商品评论 data transform object.
*
* @author Caspar
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Schema(title = PmsProductCommentDto.TABLE_DESC)
public class PmsProductCommentDto implements Serializable {

  public static final String TABLE_NAME = "pms_product_comment";
  public static final String TABLE_DESC = "商品评论";
  public static final String ID_COLUMN_NAME = "id";
  public static final String ID_TITLE = "id";
  public static final String ID_DESC = "";
  public static final String PMS_APP_ID_COLUMN_NAME = "pms_app_id";
  public static final String PMS_APP_ID_TITLE = "商品应用id";
  public static final String PMS_APP_ID_DESC = "";
  public static final String SHOP_ID_COLUMN_NAME = "shop_id";
  public static final String SHOP_ID_TITLE = "店铺id";
  public static final String SHOP_ID_DESC = "0=null";
  public static final String ORDER_ID_COLUMN_NAME = "order_id";
  public static final String ORDER_ID_TITLE = "订单id";
  public static final String ORDER_ID_DESC = "0=null";
  public static final String PRODUCT_ID_COLUMN_NAME = "product_id";
  public static final String PRODUCT_ID_TITLE = "商品id";
  public static final String PRODUCT_ID_DESC = "";
  public static final String PRODUCT_SKU_ID_COLUMN_NAME = "product_sku_id";
  public static final String PRODUCT_SKU_ID_TITLE = "商品sku id";
  public static final String PRODUCT_SKU_ID_DESC = "0=null";
  public static final String ORDER_SN_COLUMN_NAME = "order_sn";
  public static final String ORDER_SN_TITLE = "订单编号";
  public static final String ORDER_SN_DESC = "";
  public static final String PRODUCT_NAME_COLUMN_NAME = "product_name";
  public static final String PRODUCT_NAME_TITLE = "商品名";
  public static final String PRODUCT_NAME_DESC = "";
  public static final String PRODUCT_ATTRIBUTE_COLUMN_NAME = "product_attribute";
  public static final String PRODUCT_ATTRIBUTE_TITLE = "商品sku属性";
  public static final String PRODUCT_ATTRIBUTE_DESC = "json 格式";
  public static final String SCORE_PRODUCT_COLUMN_NAME = "score_product";
  public static final String SCORE_PRODUCT_TITLE = "商品评分";
  public static final String SCORE_PRODUCT_DESC = "100~1000,-1=null,单位-分";
  public static final String SCORE_SELLER_COLUMN_NAME = "score_seller";
  public static final String SCORE_SELLER_TITLE = "卖家评分";
  public static final String SCORE_SELLER_DESC = "100~1000,-1=null,单位-分";
  public static final String SCORE_LOGISTICS_COLUMN_NAME = "score_logistics";
  public static final String SCORE_LOGISTICS_TITLE = "物流评分";
  public static final String SCORE_LOGISTICS_DESC = "100~1000,-1=null,单位-分";
  public static final String DELETE_FLAG_COLUMN_NAME = "delete_flag";
  public static final String DELETE_FLAG_TITLE = "删除标识";
  public static final String DELETE_FLAG_DESC = "0-未删除";
  public static final String CREATE_TIME_COLUMN_NAME = "create_time";
  public static final String CREATE_TIME_TITLE = "创建时间";
  public static final String CREATE_TIME_DESC = "单位-毫秒";
  public static final String UPDATE_TIME_COLUMN_NAME = "update_time";
  public static final String UPDATE_TIME_TITLE = "更新时间";
  public static final String UPDATE_TIME_DESC = "单位-毫秒";
  public static final String ROW_VERSION_COLUMN_NAME = "row_version";
  public static final String ROW_VERSION_TITLE = "版本号和乐观锁";
  public static final String ROW_VERSION_DESC = "";

  @Schema(title = ID_TITLE, description = ID_DESC)
  private Long id;

  @Schema(title = PMS_APP_ID_TITLE, description = PMS_APP_ID_DESC)
  private Long pmsAppId;

  @Schema(title = SHOP_ID_TITLE, description = SHOP_ID_DESC)
  private Long shopId;

  @Schema(title = ORDER_ID_TITLE, description = ORDER_ID_DESC)
  private Long orderId;

  @Schema(title = PRODUCT_ID_TITLE, description = PRODUCT_ID_DESC)
  private Long productId;

  @Schema(title = PRODUCT_SKU_ID_TITLE, description = PRODUCT_SKU_ID_DESC)
  private Long productSkuId;

  @Size(max = 255)
  @Schema(title = ORDER_SN_TITLE, description = ORDER_SN_DESC)
  private String orderSn;

  @Size(max = 255)
  @Schema(title = PRODUCT_NAME_TITLE, description = PRODUCT_NAME_DESC)
  private String productName;

  @Size(max = 255)
  @Schema(title = PRODUCT_ATTRIBUTE_TITLE, description = PRODUCT_ATTRIBUTE_DESC)
  private String productAttribute;

  @Schema(title = SCORE_PRODUCT_TITLE, description = SCORE_PRODUCT_DESC)
  private Integer scoreProduct;

  @Schema(title = SCORE_SELLER_TITLE, description = SCORE_SELLER_DESC)
  private Integer scoreSeller;

  @Schema(title = SCORE_LOGISTICS_TITLE, description = SCORE_LOGISTICS_DESC)
  private Integer scoreLogistics;

  @Schema(title = DELETE_FLAG_TITLE, description = DELETE_FLAG_DESC)
  private Long deleteFlag;

  @Schema(title = CREATE_TIME_TITLE, description = CREATE_TIME_DESC)
  private Long createTime;

  @Schema(title = UPDATE_TIME_TITLE, description = UPDATE_TIME_DESC)
  private Long updateTime;

  @Schema(title = ROW_VERSION_TITLE, description = ROW_VERSION_DESC)
  private Long rowVersion;

}